#
# Copyright (C) 2024 by yanl1229
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
import os
from compiler import *

env = Environment()
env['LINK'] = DEF_LINK
env['AS'] = DEF_AS
env['CC'] = DEF_GCC
env['OBJCOPY'] = DEF_OBJCOPY
env['LINKFLAGS'] = DEF_LINKFLAGS
env['CCFLAGS'] = DEF_CFLAGS
env['ASFLAGS'] = DEF_ASLAGS

path = ['bsp/stm32/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Include',
        'bsp/stm32/STM32F4xx_HAL/CMSIS/Include',
        'Application/STM32F429/demo'
        'Application/STM32F429/driver'
    ]

env['HAL_PATH'] = path
env['TOP_PATH'] = os.getcwd()

Export('env')

sub_dirs = [
        'kernel',
        'bsp/stm32/STM32F4xx_HAL',
        'Application/STM32F429'
        ]

src_obj = Glob('*.o')

for d in sub_dirs:
    src_obj += SConscript(d + '/SConscript')

env.Program("STM32F429.elf", src_obj, LIBS=['c', 'm', 'nosys'])
env.Command('STM32F429.bin', 'STM32F429.elf', env['OBJCOPY'] + ' -O binary -S -R .note -R .comment STM32F429.elf STM32F429.bin')